package com.weblog.weblog.common.domain.mapper;

import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.weblog.weblog.common.config.InsertBatchMapper;
import com.weblog.weblog.common.domain.dos.ArticleContentDO;
import com.weblog.weblog.common.domain.dos.ArticleTagRelDO;

import java.util.List;

/**
 * @author gc
 * @date 2023年10月13日 13:48
 */

public interface ArticleTagRelMapper extends InsertBatchMapper<ArticleTagRelDO> {

    default int deleteByArticleId(Long articleId){
        return delete(Wrappers.<ArticleTagRelDO> lambdaQuery()
                .eq(ArticleTagRelDO::getArticleId,articleId));
    }

    /*
     * 根据文章 ID 查询
     * @author gc
     * @date 2023/10/15 21:14
     * @param articleId
     * @return java.util.List<com.weblog.weblog.common.domain.dos.ArticleTagRelDO>
     */
    default List<ArticleTagRelDO> selectByArticleId(Long articleId) {
        return selectList(Wrappers.<ArticleTagRelDO>lambdaQuery()
                .eq(ArticleTagRelDO::getArticleId, articleId));
    }


    default ArticleTagRelDO selectOneById(Long tagId){
        return selectOne(Wrappers.<ArticleTagRelDO> lambdaQuery()
                .eq(ArticleTagRelDO::getTagId,tagId)
                .last("LIMIT 1"));
    }

    /**
     * 根据文章 ID 集合批量查询
     */
    default List<ArticleTagRelDO> selectByArticleIds(List<Long> articleIds) {
        return selectList(Wrappers.<ArticleTagRelDO>lambdaQuery()
                .in(ArticleTagRelDO::getArticleId, articleIds));
    }

    /**
     * 查询该标签 ID 所有关联信息
     */
    default List<ArticleTagRelDO> selectByTagId(Long tagId){
        return selectList(Wrappers.<ArticleTagRelDO> lambdaQuery()
                .eq(ArticleTagRelDO::getTagId , tagId));
    }
}
